//==========================================================================
// Copyright (c) 2000-2008,  Elastos, Inc.  All Rights Reserved.
//==========================================================================

#ifndef __CCALLBACKINVOCATION_H__
#define __CCALLBACKINVOCATION_H__

#include <elastos.h>
#include <clsdef.h>

class CCallbackInvocation : public ICallbackInvocation
{
public:
    CARAPI_(PInterface) Probe(REIID riid);
    CARAPI_(UInt32) AddRef();
    CARAPI_(UInt32) Release();
    CARAPI Aggregate(AggregateType type, PInterface pObj);
    CARAPI GetDomain(PInterface *ppObj);

    CARAPI Invoke(
        /* [in] */ PVoid targetObject,
        /* [in] */ PVoid targetMethod,
        /* [in] */ ICallbackArgumentList * pCallbackArgumentList);

private:
    Interlocked m_cRef;

    Interlocked m_cRef;
};

#endif // __CCALLBACKINVOCATION_H__
